package com.ityy.ruiji.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

/**
 *  为什么要出现该类： 因为我们的静态资源并没有存放在springboot指定的四个目录里面
 *  分别：META-INF/resource  \resource \ public \static
 *  所以springmvc提供了一个WebMvcConfigurer接口给大家，用于去拓展静态资源所在的路径使用。【
 *
 *
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //注册静态资源所在的路径  ,注意： 位置最后是/结束，代表是这个目录下的资源
        registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
        registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
    }

    /**
     * 这个方法的作用：springmvc提供给我们去拓展消息转换器的，如果你有自定义的消息转换器
     * 那么就添加到converters集合里面，默认情况springmvc是有10个转换器。
     * @param converters
     */
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        //1. 创建一个消息转换器
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        //2. 把消息转换器底层依赖的ObjectMapper添加到消息转换器上
        messageConverter.setObjectMapper(new JacksonObjectMapper());
        //3. 把我们自定义的消息转换器添加到springmvc的消息转换器的集合里面。
        converters.add(0,messageConverter);//指定索引值为0，是让我们自定义的消息转换器优先使用。
    }
}
